package awk.jdk8.functionalInterface;

/**
 * created with IDEA
 *
 * @author haifeng.wang
 * @since 2019-05-31-18:08
 * 函数式接口，英文为Functional Interface。首先它是一个接口，那么它与其它接口有什么不同呢？不同点就是在这个接口中只允许有一个抽象方法。
 *
 * 这里的只允许一个抽象方法不包括以下几种情况：
 * 1，函数式接口里面允许有默认方法。我觉得可能是java设计师考虑到默认方法不是抽象的，它有默认实现的方法体。
 * 2，函数式接口里面允许有静态方法。原因和上面相同，静态方法并不能是抽象方法。
 * 3，函数式接口里面允许有java.lang.Object的public类型的方法如 equals hashcode等。
 */
@FunctionalInterface
public interface Converter<F, T> {
    //抽象方法
    T convert(F from);

    //java.lang.Object中public方法
    public boolean equals(Object obj);
    public int hashCode();

    //static方法
    public static void staticMethod(){
        System.out.println("JDK8Interface的静态方法");
    }

    //default方法
    public default void defaultMethod(){
        System.out.println("JDK8Interface的默认方法");
    }
}
